"""
实现读取json文件并存储到数据库
"""
import json
from utils import sqlhelper


def read_json(path: str):
    """读取Json文件"""

    with open(path, mode='r', encoding="utf-8") as fd:
        # 把json文件读取成文本并转为了Python中的集合类型。
        data = json.loads(fd.read())
        # 返回
        return data


def transfer_dict_row(data: list):
    """把中国行政区域转为一行行记录"""
    # 要拼接的记录： 省份   城市   区县
    # 定义一个集合：[[],[],[],]
    china_area_list = []
    # 遍历全国 --- 遍历省、直辖市、自治区
    for province_index, province_value in enumerate(data):
        # 遍历省
        for city_index, city_value in enumerate(province_value['city']):
            # 附加地级市的第一条记录
            china_area_list.append([province_value['name'], city_value['name'], city_value['name']])
            # 遍历地级市
            for area_index, area_name in enumerate(city_value['area']):
                # 定义一个list
                temp_list = []
                # 添加省份
                temp_list.append(province_value['name'])
                # 添加地级市
                temp_list.append(city_value['name'])
                # 添加区
                temp_list.append(area_name)
                # 附加到集合
                china_area_list.append(temp_list)
    # 返回
    return china_area_list


def save_area_db(areas:list):
    """把中国的行政区域写入到数据库库"""
    # 定义SQL语句模板
    sql = "Insert Into CityURL(Province,City,Area) Values(%s,%s,%s)"
    # 执行
    response = sqlhelper.bluk_insert(sql, areas)
    # 判断
    if response['status']:
        print("写入数据库成功！")
    else:
        print(response['error'])


if __name__ == '__main__':
    # 提供json文件的路径
    path = "../../static/files/china.json"
    china_data = read_json(path)
    area_list = transfer_dict_row(china_data)
    save_area_db(area_list)
